"""
    案例：演示混淆矩阵

    混淆矩阵
        概念：
            用于展示 真实值 和预测值 之间  正例和反例情况.
        默认：
            会用 分类少的 样本当做 正例
        混淆矩阵名称解释：
                         预测值（正例）    预测值（反例）
            真实值（正例）  真正例（TP）      伪反例（FN）
            真实值（反例）  伪正例（FP）      真反例（TN）
"""
import pandas as pd
from sklearn.metrics import confusion_matrix

#todo 1、定义数据集  真实样本(10个  6个恶性  4个良性)   -》手动设置 恶性（正例） 良性（反例）
y_train=['恶性','恶性','恶性','恶性','恶性','恶性','良性','良性','良性','良性']

#todo 2、 定义标签名
label=['恶性','良性']  #标签1：正样本（正例）  标签2:负样本（反例）
df_label=['恶性（正例）','良性（假例）']  #这是为了让格式好看

#todo 3、定义 预测结果A   3个恶性 ，4个良性   改完后数据集  3个恶性   7个良性
y_pre_A=['恶性','恶性','恶性',     '良性','良性','良性',    '良性','良性','良性','良性']

#todo 4、 把上述的预测结果A 转换为 混淆矩阵
cm_A=confusion_matrix(y_train,y_pre_A,labels=label)
# print(f"混淆矩阵A：\n{cm_A}")  #美化

#todo 5、把混淆矩阵 转化为 DataFrame格式
df_A=pd.DataFrame(cm_A,index=df_label,columns=df_label)
print(f"预处结果A对应的DataFrame对象:\n{df_A}")


#todo 6、 定义 预测结果B 预测对了 -》 6个恶性  1个良性
y_pre_B=['恶性','恶性','恶性','恶性','恶性','恶性','良性','恶性','恶性','恶性']
cm_B=confusion_matrix(y_train,y_pre_B,labels=label)
df_B =pd.DataFrame(cm_B,index=df_label,columns=df_label)
print(f"预处结果B对应的DataFrame对象:\n{df_B}")

#总结： 混淆矩阵已经开发完成，接下来，计算他的TP\FN\FP\TN







